package com.totcy.atom.presenter.contract;

import com.totcy.atom.bean.SubjectBean;
import com.totcy.baselibrary.base.mvpbase.BaseModel;
import com.totcy.baselibrary.base.mvpbase.BaseView;

import java.util.List;

/**
 * description :  Subject Contract
 *
 * @author : Totcy
 * @date : 2018/11/8 13:35
 */

public interface SubjectContract {
    interface View extends BaseView {
        /**
         * @param subjects
         */
        void onSubjectList(List<SubjectBean> subjects);

        void onFail(int code, String message);
    }

    interface Presenter {
        /**
         * Presenter 调用 model 获取数据
         */
        void getSubjectList();
    }

    interface Model extends BaseModel {
        interface DataCallback {
            /**
             * 数据获取成功  返回实体
             *
             * @param subjects
             */
            void onSubjectList(List<SubjectBean> subjects);


            /**
             * 这里获取数据失败
             */
            void onDataNotAvailable(int code, String message);
        }

        /**
         * 网络获取数据
         */
        void getSubjectList(DataCallback callback);
    }
}
